/**
 * File Name   : ConfigLoaderListener.java
 * Description : 
 */
package com.hh.common.listener;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import com.hh.common.consts.ConfConst;

/**
 * 配置文件加载监听器
 * @author 冯昌硕
 * @create 2013-1-26 上午9:31:28
 */
public class ConfigLoaderListener implements ServletContextListener {
    
    private static final Logger log = Logger.getLogger(ConfigLoaderListener.class);

    @Override
    public void contextDestroyed(ServletContextEvent selvletContextEvent) {
        
    }

    /**
     * 监听器初始化
     * @modify 2013-03-04 23:22 重新配置Log4j日志配置文件，将日志文件生成到应用的相对路径下，以便于管理。
     */
    @Override
    public void contextInitialized(ServletContextEvent selvletContextEvent) {
        //log.info("配置文件加载监听器启动");
        
        // deleted begin 2013-02-01 暂时不用配置文件
//        ConfigLoader configLoader = new ConfigLoader();
//        boolean result = configLoader.load("conf.properties");
//        if(result) {
//            // 通栏广告附件上传根目录
//            ConfConst.UPLOAD_FULLCOLAD_DIR = configLoader.getValue("UPLOAD_FULLCOLAD_DIR");
//        } else {
//            log.error("配置文件conf.properties加载失败");
//        }
        
        String currPath = this.getClass().getResource("/").getPath();
        
        // 系统路径=[XX/webapps/honghuiFortune/WEB-INF/classes/\..\..]
        ConfConst.WEBCONTENT_BASE_DIR = currPath + File.separator + ".." + File.separator + "..";
        log.debug("系统路径=[" + ConfConst.WEBCONTENT_BASE_DIR + "]");
        
        // 重新配置Log4j日志配置文件，将日志文件生成到应用的相对路径下，以便于管理。
        FileInputStream fis = null;
        try {
            Properties props = new Properties();
            fis = new FileInputStream(currPath + File.separator + "log4j.properties");
            props.load(fis);
            
            String logFilePath = ConfConst.WEBCONTENT_BASE_DIR + File.separator + props.getProperty("log4j.appender.A1.File");
            props.setProperty("log4j.appender.A1.File", logFilePath);
            
            PropertyConfigurator.configure(props);
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
